package com.yty.demo._6_collection;

import java.util.Comparator;
import java.util.Iterator;
import java.util.Set;
import java.util.TreeSet;

/**
 * @author: yangtaoyao
 * @time: 2020/1/13 10:15
 * @description: TreeSet 按年龄排序
 */
public class TreeSetTest {
    public static void main(String[] args) {
        Set<Integer> set=new TreeSet<>();
        set.add(1);
        set.add(0);
        set.add(18);
        set.add(12);
        System.out.println(set);
        set.remove(0);
        System.out.println(set.contains(0));
//        set.clear();
        System.out.println(set);

        //迭代器遍历
        Iterator it=set.iterator();
        while (it.hasNext()){
            System.out.print(it.next()+",");
        }
        System.out.println();

        //for each 遍历
        for (Object object:set) {
            System.out.print(object+",");
        }
        System.out.println();

        Person p1=new Person(19,"张三");
        Person p2=new Person(20,"王三");
        Person p3=new Person(17,"里三");
        Comparator comparator=new Comparator() {
            @Override
            public int compare(Object o1, Object o2) {
                Person p1= (Person) o1;
                Person p2= (Person) o2;
                if(p1.age>p2.age){
                    return -1;
                }else if(p1.age<p2.age){
                    return 1;
                }else{
                    return 0;
                }
            }
        };
        Set<Person> sp=new TreeSet<Person>(comparator);
        sp.add(p1);
        sp.add(p2);
        sp.add(p3);
        for (Person p:sp) {
            System.out.print(p);
        }
    }

}
//class Person implements Comparable<Person> {

class Person {
    int age;
    String name;

    public Person(int age, String name) {
        this.age = age;
        this.name = name;
    }

    /**
     * 按年龄升序
     */
//
//    @Override
//    public int compareTo(Person o) {
//        if(this.age>o.age){
//            return 1;
//        }else if(this.age<o.age){
//            return -1;
//        }else{
//            return 0;
//        }
//    }

    @Override
    public String toString() {
        return "[" +
                "age=" + age +
                ", name='" + name + '\'' +
                "]\\\n";
    }
}
/**
 * 自然排序实现的是comparable接口。其在类可以修改时使用。
 * 定制排序实现的是comparator接口。其在类不可以修改时使用
 * 在使用定制排序或是自然排序时，在其用到的类中都要重写hashCode()与equals()方法
 */


